package nowCoder;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class HJ19 {
/*
描述
    开发一个简单错误记录功能小模块，能够记录出错的代码所在的文件名称和行号。
处理：
    1、 记录最多8条错误记录，循环记录，最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条，但是错误计数增加。最后一个斜杠后面的带后缀名的部分（保留最后16位）和行号完全匹配的记录才做算是“相同”的错误记录。
    2、 超过16个字符的文件名称，只记录文件的最后有效16个字符；
    3、 输入的文件可能带路径，记录文件名称不能带路径。也就是说，哪怕不同路径下的文件，如果它们的名字的后16个字符相同，也被视为相同的错误记录
    4、循环记录时，只以第一次出现的顺序为准，后面重复的不会更新它的出现时间，仍以第一次为准
数据范围：
    错误记录数量满足 1≤n≤100  ，每条记录长度满足 1≤len≤100
输入描述：
    每组只包含一个测试用例。一个测试用例包含一行或多行字符串。每行包括带路径文件名称，行号，以空格隔开。
输出描述：
    将所有的记录统计并将结果输出，格式：文件名 代码行数 数目，一个空格隔开，如：
 */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
        while(in.hasNext()){
            String x = in.nextLine();
            String[] y = x.split(" ");
            int index = y[0].lastIndexOf('\\');
            if(y[0].length() - index > 16){
                String i = y[0].substring(y[0].length() - 16) +" "+y[1];
                map.put(i, map.get(i) == null ? 1 : map.get(i)+1);
            }else{
                String i = y[0].substring(index+1) +" "+y[1];
                map.put(i, map.get(i) == null ? 1 : map.get(i)+1);
            }
        }
        int i = 0;
        for(Map.Entry<String,Integer> en : map.entrySet()){
            if(i>=map.size()-8) System.out.println(en.getKey()+" "+en.getValue());
            i++;
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Object[][] x = new Object[100][2];
        int index = 0;
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.next();
            int b = in.nextInt();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i <16; i++) {
                if ('\\' == a.charAt(a.length()-i-1)) {
                    break;
                }
                sb.append(a.charAt(a.length()-i-1));
            }
            sb.reverse().append(" ").append(b);
            for (int i = 0; i < 100; i++) {
                if (x[i][0] == null) {
                    x[i][0] = sb.toString();
                    x[i][1] = 1;
                    index = i;
                    break;
                }
                if (sb.toString().equals(x[i][0].toString())) {
                    x[i][1] = (int)x[i][1] + 1;
                    break;
                }
            }
        }
        if(index < 8)
            for (int i = 0; i<= index && i < 8; i++) {
                System.out.println(x[i][0] + " " + x[i][1]);
            }
        else{
            for (int i = index-7; i <= index ; i++) {
                System.out.println(x[i][0] + " " + x[i][1]);
            }
        }
    }
}
